package cn.alusiaor.dic.typehandler;

import cn.alusiaor.dic.controller.ContextUtil;
import cn.alusiaor.dic.domain.DO.Dic;
import cn.alusiaor.dic.service.IDictService;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class StatusTypeHandler extends BaseTypeHandler<Dic> {


    /*    该方法实现：通过 java类向数据库中设置（插入数据）
        参数含义：第一个为 JDBC 预处理对象，第二个为操作的位置，第三个为 javaType，第四个为 jdbcTpye*/
    @Override
    public void setNonNullParameter(PreparedStatement preparedStatement, int i, Dic s, JdbcType jdbcType) throws SQLException {
        preparedStatement.setString(i, s.getId());
    }

    /*该方法实现通过列名获取数据库表中的数据*/
    @Override
    public Dic getNullableResult(ResultSet resultSet, String s) throws SQLException {
        String str = resultSet.getString(s);
        return ContextUtil.getBean(IDictService.class).getDic(str);
    }

    /*该方法实现通过列标获取数据库表中的数据*/
    @Override
    public Dic getNullableResult(ResultSet resultSet, int i) throws SQLException {
        String str = resultSet.getString(i);
        return ContextUtil.getBean(IDictService.class).getDic(str);
    }

    /*该方法实现通过存储过程获取数据库表中的数据*/
    @Override
    public Dic getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
        String str = callableStatement.getString(i);
        return ContextUtil.getBean(IDictService.class).getDic(str);
    }
}
